package com.ship.contract.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ship.contract.bean.ConTemplateClause;
import com.ship.contract.mapper.ConTemplateClauseMapper;
import com.ship.contract.service.ConTemplateClauseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author tangshixuan
 * @date 2023-9-13
 */
@Service
public class ConTemplateClauseServiceImpl extends ServiceImpl<ConTemplateClauseMapper, ConTemplateClause> implements ConTemplateClauseService {

    @Autowired
    private ConTemplateClauseMapper conTemplateClauseMapper;


    @Override
    public List<ConTemplateClause> listByTemplateId(Long templateId) {
        List<ConTemplateClause> conTemplateClauses = new ArrayList<>();
        List<Map<String, Object>> clauseTypesName = conTemplateClauseMapper.clauseTypesByTemplateId(templateId);
        if(null != clauseTypesName && clauseTypesName.size()>0){
            for (Map<String, Object> map : clauseTypesName) {
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    String key = entry.getKey();
                    Object value = entry.getValue();
                    if(key.equals("clauseType")){
                        List<ConTemplateClause> templateClauses = this.getBaseMapper().selectList(new LambdaQueryWrapper<ConTemplateClause>()
                                .eq(ConTemplateClause::getTemplateId,templateId)
                                .eq(ConTemplateClause::getClauseType,value));
                        if(null != templateClauses && templateClauses.size()>0){
                            conTemplateClauses.addAll(templateClauses);
                        }
                    }
                }
            }
        }
        return conTemplateClauses;
    }

    @Override
    public List<Map<String, Object>> clauseTypesByTemplateId(Long templateId) {
        return conTemplateClauseMapper.clauseTypesByTemplateId(templateId);
    }

    @Override
    public void removeByTemplateId(Long id) {
        conTemplateClauseMapper.removeByTemplateid(id);
    }
}
